Performans için Tasarım Kriterleri
Bilgisayar mimarisi ve organizasyonu, bilgisayarın performansını etkileyen birçok tasarım kriterini içerir. Bu kriterler, bilgisayarın işlemci, bellek, veri yolları, giriş/çıkış aygıtları ve diğer bileşenlerinin etkileşimlerini yöneterek bir araya gelir. Aşağıda, performansı artırmak için kullanılan bazı ana tasarım kriterleri yer almaktadır:
- İşlemci hızı ve sayısı: İşlemci hızı, işlemcinin saniyede kaç talimat işleyebileceğini belirler. İşlemcinin hızı arttıkça, bilgisayarın işlem yapma kapasitesi de artar. İşlemci sayısı da önemlidir, çünkü birden fazla işlemcinin kullanılması, paralel işleme ve daha hızlı hesaplama sürelerine olanak tanır.
- Bellek boyutu ve hızı: Bellek, bilgisayarın verileri depoladığı ve işlediği yerdir. Daha büyük bellek, daha fazla veri depolama kapasitesi sağlar. Bellek hızı, bilgisayarın verileri hızlı bir şekilde işleyebilmesini sağlar.
- Önbellek boyutu ve hızı: İşlemcinin yanındaki küçük bellek alanı olan önbellek, işlemcinin sık kullanılan verilere hızlı erişmesini sağlar. Daha büyük ve daha hızlı önbellek, işlemcinin verilere daha hızlı erişmesine olanak tanır.
- Veri yolu genişliği: Veri yolu, bilgisayarın verilerin hareket ettiği yolları ifade eder. Geniş bir veri yolu, daha hızlı veri transferi sağlar.
- Giriş/Çıkış (I/O) hızı: Bilgisayarın I/O aygıtları (örneğin, sabit diskler, USB sürücüler ve ağ adaptörleri) veri taşırlar. Daha hızlı I/O aygıtları, veri transferinin daha hızlı olmasını sağlar.
- Paralel işleme yeteneği: Paralel işleme, birden fazla işlemci kullanarak aynı anda birden fazla işlem yapmayı ifade eder. Paralel işleme, performansı artırır ve daha hızlı işlem yapmayı sağlar.
- Bellek hiyerarşisi: Bellek hiyerarşisi, bilgisayarın belleklerinin farklı seviyelerini ifade eder. Önbellek, ana bellek ve sabit disk gibi farklı bellek seviyeleri, veri erişim sürelerini ve işlem hızını etkiler.
Bu tasarım kriterleri, performansı artırmak için kullanılan bazı temel faktörlerdir.
Branch Prediction:
Programların if koşullarını veya döngülerini işlemek için bilgisayarlar genellikle branch (şube) komutlarını kullanırlar. Ancak, branch komutları, programın çalışma süresini artırabilir ve performansı düşürebilir. Bu nedenle, branch prediction (şube tahmini) kullanarak, bilgisayarın programın ne yapacağını önceden tahmin etmesi ve gereksiz yere işlem yapmasını önlemesi mümkün hale gelir. Bilgisayar, branch komutlarından önceki verileri ve program akışını analiz ederek, bir sonraki işlem için en olası senaryoyu tahmin edebilir. Bu tahmin, işlemci performansını artırabilir ve programların daha hızlı çalışmasına yardımcı olabilir.
Data Flow Analysis
Data flow analysis (veri akışı analizi), bir programın hangi verilerin kullanıldığını ve nasıl işlendiğini analiz eder. Bu analiz, programın bellek kullanımını ve veri erişimini optimize etmek için kullanılabilir. Örneğin, bir programda bir dizi değişken kullanıldığında, bilgisayar bu değişkenlerin nasıl birbirine bağlandığını ve bir değişkenin ne zaman kullanıldığını analiz edebilir. Bu analiz, değişkenlerin bellekten daha hızlı erişilebilir hale getirilmesine ve programın daha hızlı çalışmasına yardımcı olabilir.
Speculative Execution
Speculative execution (öngörülü işlem), işlemcinin programın akışını analiz ederek, bir sonraki işlemi tahmin etmesini ve bu işlemi önceden yapmasını sağlayan bir tekniktir. Bu teknik, işlemcinin bir sonraki adım için verileri önceden yüklemesini ve işlem yapmasını mümkün kılar. Eğer tahmin doğruysa, programın çalışma süresi azaltılabilir ve performans artırılabilir. Ancak, tahmin yanlışsa, bu durum işlemcinin daha fazla işlem yapmasına neden olabilir ve programın performansını azaltabilir. Bu nedenle, öngörülü işlem genellikle riskli bir teknik olarak kabul edilir ve dikkatli bir şekilde kullanılması gerektiği belirtilir.
Bu kavramlar, bilgisayar mimarisi ve organizasyonu alanında performansı artırmak için kullanılan tekniklerden sadece birkaçıdır.
CPU Gerçekleştirim Aşamaları
Temel bir CPU'nun çalışma prensibi, birden fazla gerçekleştirme aşamasından oluşur. Bu aşamalar, bilgisayarın işlemcisi tarafından program komutlarından birini alarak, yürütmesi ve sonuçları döndürmesi için gereklidir. İşlem aşamaları, sırayla aşağıdaki gibidir:
- Instruction Fetch (Komut Alımı): Bu aşamada, programın bir sonraki komutu bellekten alınır ve işlemciye yüklenir. İşlemci, komutun başlangıç adresini kullanarak, bellekten komutları alır ve programın çalışmasını devam ettirir.
- Instruction Decode (Komut Çözümleme): Bu aşamada, işlemci komutu çözümleyerek, ne yapması gerektiğini belirler. Komutun işlemi, işlemcinin yürütmesi için gereken diğer verileri de belirleyebilir.
- Execution (İşlem Yürütme): Bu aşamada, komutun yürütülmesi gerçekleşir. İşlemci, komutun gerektirdiği işlemi yapar ve sonucu belirler.
- Memory Access (Bellek Erişimi): Bu aşamada, işlemci belleğe erişerek, verileri okur veya yazabilir. Bu aşamada, işlemci, programın çalışması için gerekli olan verileri bellekten alır veya işlem sonucunu belleğe yazabilir.
- Write Back (Yazma Geri): Bu aşamada, işlemci işlem sonucunu belirler ve sonucu ilgili kaydediciye veya bellek konumuna yazar.
Bu temel aşamalar, işlemcinin her bir program komutunu nasıl işlediğini açıklar. İşlemci, bu aşamaları tekrarlayarak, programın her bir komutunu sırayla işler. Her bir aşama, işlemcinin performansını artırmak için optimize edilebilir ve özelleştirilebilir. Bununla birlikte, temel işlemci tasarımının temel unsurları bu aşamalardır.
Makine komutu karakteristikleri nelerdir
Makine komutları, bilgisayarın işlemci tarafından anlaşılabilen bir dizi düşük seviye talimattır. Bu komutlar, verileri alır, işler ve sonuçları diğer kaynaklara veya bellek konumlarına yazar. Makine komutlarının temel karakteristikleri şunlardır:
- İşlem Kodu (Opcode): İşlem kodu, komutun işlemcinin yapması gereken temel işlemi belirtir. Örneğin, bir toplama veya çıkarma işlemi gerçekleştirmek için farklı işlem kodları kullanılır.
- Operandlar: Operandlar, komutun yürütülmesi için gerekli olan verileri veya bellek adreslerini belirtir. Operandlar, komutun yapılacak işlem türüne bağlı olarak değişebilir. Örneğin, bir toplama işlemi için operandlar, toplanacak iki sayı veya bellek adresleri olabilir.
- Bellek Adresleme Modu: Bellek adresleme modu, komutun bellek adresine nasıl eriştiğini belirler. Direkt bellek adreslemesi, kaynak veya hedef bellek adreslerinin doğrudan belirtildiği bir yöntemdir. Dolaylı bellek adreslemesi ise kaynak veya hedef bellek adreslerinin bir kaydedici veya başka bir bellek adresinden belirtilmesi yöntemidir.
- Adres Genişlemesi: Adres genişlemesi, komutların işlemci tarafından yürütüleceği bellek konumlarının büyüklüğünü belirler. Bu, işlemcinin kullandığı bellek adresleme sınırını belirler ve bellek adreslerinin boyutunu kontrol eder. Örneğin, bir işlemcinin 32 bit adres genişlemesi, işlemcinin 4 GB'a kadar bellek adreslemesi yapmasını sağlar.
- İşlemci Modu: İşlemci modu, işlemcinin hangi işletim sistemini veya programı yürüttüğünü belirler. Bu, işlemcinin bellek adreslemesi ve işlemci kaynaklarını yönetme şeklini de etkiler.
Makine komutlarının bu özellikleri, işlemcinin işlevselliğini belirleyen önemli faktörlerdir. Her işlemci mimarisi farklı olabilir, ancak temel olarak bu özellikleri içermelidir.
Makinenin işlem türleri
- Data Transfer (Veri Transferi): Bu işlem türü, bellekteki verilerin bir yerden başka bir yere kopyalanmasını veya taşınmasını içerir. Örneğin, bir kaydedicinin içeriğinin bellekten başka bir kaydediciye kopyalanması veya bir bellek adresinden verinin alınması ve bir başka bellek adresine yazılması gibi işlemler bu kategoriye girer.
- Aritmetik: Bu işlem türü, sayısal değerlerin matematiksel işlemlerle (toplama, çıkarma, çarpma, bölme vb.) işlenmesini içerir. Bu işlem türü, hesaplama, sayısal modelleme ve diğer matematiksel işlemler için gereklidir.
- Logic (Mantık): Bu işlem türü, mantıksal operasyonların (AND, OR, XOR, vb.) gerçekleştirilmesini içerir. Bu işlem türü, bir programın kontrol yapısını kontrol etmek ve koşullu ifadeleri değerlendirmek için kullanılır.
- Conversion (Dönüştürme): Bu işlem türü, farklı sayısal biçimler arasında dönüşümlerin yapılmasını içerir. Örneğin, bir sayının ondalıktan ikili sayı sistemine veya ASCII karakterlerinin sayısal değerlerine dönüştürülmesi gibi işlemler bu kategoriye girer.
- Input/Output (Giriş/Çıkış): Bu işlem türü, işlemcinin girdi veya çıktı cihazlarıyla iletişim kurmasını sağlar. Örneğin, klavyeden veri girişi veya bir yazıcıya veri yazımı gibi işlemler bu kategoriye girer.
- System Control (Sistem Kontrolü): Bu işlem türü, sistem düzeyinde kontrol işlemlerinin gerçekleştirilmesini içerir. Bu, işlemcinin çalıştığı işletim sistemine veya işletim sisteminden aldığı kontrol komutlarına göre değişir. Örneğin, işlemcinin kesme işaretlerini işlemesi veya bellek koruma düzeylerini kontrol etmesi gibi işlemler bu kategoriye girer.
- Transfer of Control (Kontrol Aktarımı): Bu işlem türü, programın kontrol akışının kontrol edilmesini sağlar. Bu, bir programın farklı bölümleri arasında veya farklı programlara geçiş yapmak için kullanılır.